/**
 * Created by Administrator on 2015/11/1 0001.
 */
/************************程序初始化*****************************************/
$(document).ready(function(){
    FoodReset();
});
//定义食物坐标
var x=0;
var y=0;
//定义游戏状态 运行1 停止0
var state=0;
//初始化方向D，向左D=1，右D=2，上D=3，下D=4
var D=1;
//蛇头初始坐标
var m=260;
var n=260;
//定义移动速度
var t=200;
//身体数组
var body=[];
//每格宽高10px；
h=w=20;
//初始化蛇身长度s
s=3;


/*************************************更改速度函数****************************************/
var  speed=function(){
    //相应的长度对应响应的速度
    if(body.length==4){
        t=180;
    }
    else if(body.length==6){
        t=160;
    }
    else if(body.length==8){
        t=140;
    }
    else if(body.length==10){
        t=120;
    }
    else if(body.length==12){
        t=100;
    }
    else if(body.length==14){
        t=80;
    }
    else if(body.length==16){
        t=60;
    }
};
/****************************按键和方向控制函数*************************************/
document.onkeydown=function(event){
    var e = event || window.event || arguments.callee.caller.arguments[0];
    if(state==0){
        if(e && e.keyCode==32){
            state=1;
            if(D==1){
                move=setInterval(function(){
                    m=m-w;
                    show();
                },t);
            }
            else if(D==2){
                move=setInterval(function(){
                    m=m+w;
                    show();
                },t);
            }
            else if(D==3){
                move=setInterval(function(){
                    n=n-h;
                    show();
                },t);
            }
            else if(D==4){
                move=setInterval(function(){
                    n=n+h;
                    show();
                },t);
            }


        }
    }
    else if(state==1){
        if(e && e.keyCode==32){
            clearInterval(move);
            state=0;
        }
        if(e && e.keyCode==37){
            //alert('37=左键');
            if(D!=2){
                clearInterval(move);
                move=setInterval(function(){
                    m=m-w;
                    show();
                },t);
                D=1;
            }
        }
        if(e && e.keyCode==38){
            //alert('38=上键');
            if(D!=4){
                clearInterval(move);
                move=setInterval(function(){
                    n=n-h;
                    show();
                },t);
                D=3;
            }
        }
        if(e && e.keyCode==40){
            if(D!=3){
                clearInterval(move);
                move=setInterval(function(){
                    n=n+h;
                    show();
                },t);
                D=4;
            }
            //alert('40=下键');
        }if(e && e.keyCode==39){
            if(D!=1){
                clearInterval(move);
                move=setInterval(function(){
                    m=m+w;
                    show();
                },t);
                D=2;
            }
            //alert('39=右键');
        }
    }

};
/**************************显示蛇**************************************/
var show=function(){
    body=$(".body");
    $("#body-0").css({"left":m+"px","top":n+"px","background-color":"red"});
    eat();
    dead();
    speed();
    for(var i=body.length;i>0;i--){
        var f=body[i-1].style.left;
        var g=body[i-1].style.top;
        if(i!==1){
            $("#body-"+i).css({"left":f,"top":g});
        }
        else{
            $("#body-"+i).css({"left":f,"top":g,"background-color":"red"});

        }

    }

};
/********************食物位置重置函数************************************/
var  FoodReset=function(){
    var foot=$("#food");

    x=Math.floor(Math.random()*25)*20;
    y=Math.floor(Math.random()*25)*20;
    foot.css("left",x+"px");
    foot.css("top",y+"px");
};
/*************************吃函数*********************************/
var eat=function(){
  if(m==x&&n==y){
      FoodReset();
      var addDiv=document.createElement("DIV");
      addDiv.id="body-"+(body.length);
      addDiv.className="body";
      addDiv.style.left=m;
      addDiv.style.top=n;
      document.getElementById("main").appendChild(addDiv);
  }
};
/************************蛇的死法*********************************/
var dead=function(){
    for(var z=1;z<body.length-1;z++){
        var k=body[z].style.left;
        var j=body[z].style.top;
        if(m==k&&n==j){
            alert("你把自己撞断了~>_<~+");
        }
        //alert("1");
    }

    //如果撞墙
    if(m==-20||m==500||n==-20||n==500){

        state=0;
        clearInterval(move);
        alert("撞墙干嘛，别想不开啊~>_<~+");
        reset();
    }
};
/****************************重新开始函数**********************************/
var reset=function(){
    //重置蛇身
    for(i=body.length-1;i>=0;i--){
        if(i>3){
            //删除多余div
            clear=document.getElementById("body-"+(i));
            clear.parentNode.removeChild(clear);
        }
        else
        {
            //重置蛇位置在中间
            //alert(i);
            $("#body-"+i).css({"left":260,"top":260});
        }
    }
    FoodReset();
    m=n=260;
};